//! 定义了 Package 结构体

use super::Pattern;
use sgs_core::preclude::*;

#[derive(Debug, Default)]
pub struct Package {
    /// 唯一标识符
    pub tag: String,

    /// 包名称
    pub name: String,

    /// 版本号
    pub version: String,

    /// 描述（可选）
    pub desp: String,

    /// 卡组
    pub cards: Vec<Card>,

    /// 武将列表
    pub roles: Vec<Role>,

    /// 游戏模式列表
    pub patterns: Vec<Pattern>,

    /// 事件委托器列表
    pub delegators: Vec<Box<dyn super::Delegate>>,
}

impl Package {
    /// 添加事件委托器
    pub fn add_delegators(&mut self, delegator: impl super::Delegate + 'static) {
        self.delegators.push(Box::new(delegator));
    }
}
